﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Biblioteca.classesBasicas.jogo;
using Biblioteca.classesBasicas.pessoa;
using Biblioteca.fachada;

namespace Desktop.views.cruds.crudsJogo.crudPartida
{
    public partial class AtribuicoesPartida : Form
    {

        private PartidaReserva partidaReserva;
        private Reserva reserva;
        private List<Cliente> listaClientes;
        private List<Cliente> listaClientesSelecionados = new List<Cliente>();
        private Cliente cliente;
        private Fachada fachada = new Fachada();
        private Boolean condicao;
        private List<Responsavel> listaResponsaveis = new List<Responsavel>();
                

        public AtribuicoesPartida(PartidaReserva partidaReserva, Reserva reserva)
        {
            this.partidaReserva = partidaReserva;
            this.reserva = reserva;

            partidaReserva.Hide();
            InitializeComponent();
        }

        private void buttonAvancar_Click(object sender, EventArgs e)
        {
            if (listaResponsaveis.Count != listaClientesSelecionados.Count)
            {
                MessageBox.Show("Algum Cliente ficou sem equipamento.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                PartidaJuiz partidaJuiz = new PartidaJuiz(this, reserva, listaResponsaveis);
                partidaJuiz.ShowDialog();
            }
                        
        }

        private void buttonVoltar_Click(object sender, EventArgs e)
        {
            partidaReserva.Show();
            this.Dispose();
        }        

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            if (DialogResult.Yes == MessageBox.Show("Se você cancelar, perderá todos os dados desta operação.\nRealmente deseja Cancelar?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation))
            {
                partidaReserva.cancelar();
                this.Dispose();
            }
        }

        private void AtribuicoesPartida_FormClosed(object sender, FormClosedEventArgs e)
        {
            partidaReserva.Show();
            this.Dispose();
        }

        private void AtribuicoesPartida_Load(object sender, EventArgs e)
        {
            carregarGridViewClientesSelecionar();
        }


        private void dataGridViewClientesSelecionar_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            
            if (e.RowIndex > -1)
            {
                DataGridViewRow row = this.dataGridViewClientesSelecionar.Rows[e.RowIndex];

                cliente = new Cliente();
                
                cliente.Id = row.Cells[0].Value.ToString();
                cliente.Nome = row.Cells[1].Value.ToString();
                cliente.Sexo = row.Cells[2].Value.ToString();
                cliente.Idade = row.Cells[3].Value.ToString();
                cliente.Rg = row.Cells[4].Value.ToString();
                cliente.Cpf = row.Cells[5].Value.ToString();

                condicao = true;

                foreach (Cliente elemento in listaClientesSelecionados)
                {
                    if (elemento.Id == cliente.Id)
                    {
                        condicao = false;
                    }                    
                }

                if (condicao == false)
                {
                    MessageBox.Show("Este Cliente já foi adicionado.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    listaClientesSelecionados.Add(cliente);
                    this.carregarGridViewClientesSelecionados();
                }
                                
            }
        }



        public void carregarGridViewClientesSelecionar()
        {
            listaClientes = fachada.listarCliente();

            DataGridViewCellStyle columnHeaderStyle =
            new DataGridViewCellStyle();
            columnHeaderStyle.BackColor = Color.Aqua;
            columnHeaderStyle.Font =
                new Font("Verdana", 10, FontStyle.Bold);
            this.dataGridViewClientesSelecionar.ColumnHeadersDefaultCellStyle =
                columnHeaderStyle;

            this.dataGridViewClientesSelecionar.DataSource = listaClientes;

            this.dataGridViewClientesSelecionar.Columns[0].HeaderText = "ID";
            this.dataGridViewClientesSelecionar.Columns[1].HeaderText = "NOME";
            this.dataGridViewClientesSelecionar.Columns[2].HeaderText = "SEXO";
            this.dataGridViewClientesSelecionar.Columns[3].HeaderText = "IDADE";
            this.dataGridViewClientesSelecionar.Columns[4].HeaderText = "RG";
            this.dataGridViewClientesSelecionar.Columns[5].HeaderText = "CPF";

        }


        private void dataGridViewClientesSeceionados_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                DataGridViewRow row = this.dataGridViewClientesSeceionados.Rows[e.RowIndex];

                cliente.Id = row.Cells[0].Value.ToString();
                cliente.Nome = row.Cells[1].Value.ToString();
                cliente.Sexo = row.Cells[2].Value.ToString();
                cliente.Idade = row.Cells[3].Value.ToString();
                cliente.Rg = row.Cells[4].Value.ToString();
                cliente.Cpf = row.Cells[5].Value.ToString();

                row.DefaultCellStyle.BackColor = Color.LightBlue;

                EquipamentoCliente equipamentoCliente = new EquipamentoCliente(this, cliente);
                equipamentoCliente.ShowDialog();
            }              
        } 

        public void carregarGridViewClientesSelecionados()
        {
            
            dataGridViewClientesSeceionados.Rows.Clear();
            dataGridViewClientesSeceionados.ColumnCount = 6;
            dataGridViewClientesSeceionados.ColumnHeadersVisible = true;
            dataGridViewClientesSeceionados.AllowUserToAddRows = false;
            
            DataGridViewCellStyle columnHeaderStyle =
            new DataGridViewCellStyle();
            columnHeaderStyle.BackColor = Color.Aqua;
            columnHeaderStyle.Font =
                new Font("Verdana", 10, FontStyle.Bold);
            this.dataGridViewClientesSelecionar.ColumnHeadersDefaultCellStyle =
                columnHeaderStyle;

            //dataGridViewClientesSeceionados.DataSource = listaClientesSelecionados;

            this.dataGridViewClientesSeceionados.Columns[0].Name = "ID";
            this.dataGridViewClientesSeceionados.Columns[1].Name = "NOME";
            this.dataGridViewClientesSeceionados.Columns[2].Name = "SEXO";
            this.dataGridViewClientesSeceionados.Columns[3].Name = "IDADE";
            this.dataGridViewClientesSeceionados.Columns[4].Name = "RG";
            this.dataGridViewClientesSeceionados.Columns[5].Name = "CPF";

            foreach (Cliente elemento in listaClientesSelecionados)
            {
                this.dataGridViewClientesSeceionados.Rows.Add(elemento.Id, elemento.Nome, elemento.Sexo, elemento.Idade, elemento.Rg, elemento.Cpf);
            }

        }

        public void adicionarListaResponsaveis(Responsavel responsavel) 
        {
            this.listaResponsaveis.Add(responsavel);
        }

        public void cancelar() 
        {
            partidaReserva.cancelar();
            this.Dispose();
        }
    }
}